package jdbc;

import org.junit.jupiter.api.Test;

import java.sql.Connection;

/**
 *  传统获取Connection问题分析
 */
public class ConQuestion {

    public static void main(String[] args) {

        /*
            传统方式获取Connection问题分析
            1. 传统的JDBC数据库连接使用 DriverManager 来获取，每次向数据库建立连接的时候都要将 Connection 加载到内存中
                再验证IP地址，用户名和密码(0.05~1s时间)。需要数据库连接的时候，就向数据库要求一个，频繁进行将占用很多系统资源，
                容易造成服务器崩溃。
            2. 每一次数据库连接，使用完后都得断开，如果程序出现异常而未能安全关闭，会导致数据库内存泄露
                最终将导致重启数据库
            3. 可以使用数据库连接池解决问题
         */

    }

    @Test
    public void testCon() {
        long start = System.currentTimeMillis();
        //连接mysql5000次
        System.out.println("开始连接....");
        for (int i = 0; i < 5000; i++) {
            //使用传统JDBC方式得到连接
            Connection connection = JDBCUtils.getConnection();
            //做一些工作，比如得到PreparedStatement
            //....
            //关闭
            JDBCUtils.close(null, null, connection);
        }
        long end = System.currentTimeMillis();
        System.out.println("传统方式5000次连接数据库耗时：" + (end - start));//耗时 20282ms
    }
}
